package com.fare.taluo.util.excel.engine.module;

import java.io.File;
import java.net.URL;
import java.net.URLDecoder;
import java.util.HashMap;
import java.util.Map;

import com.fare.taluo.util.excel.engine.xmlparse.XmlParse;
import com.fare.taluo.util.excel.engine.xmlparse.impl.Dom4jParseImpl;


/**
 * 此类应用了单态的方式，xml文件中加载一次
 * @author tss 项目二部-信息化应用中心-广东数据通信网络有限公司. 
 * @since from version 1.1
 */
public class Model {
	
	private  Map<String,Object> map = new HashMap<String,Object>();
	/**读取的xml文件的位置*/
	private final  String FILE_DIRECTORY_LOCATIONS = "excel";
	
	private static Model model = null;
	
	private Model(){
	}; 

	public static Model getInstance(){
		if(model==null){
			model=new Model();
			model.parseFileForDirectory();
		}
		return model;
	}
	
	public  Map<String,Object> getMap() {
		return map;
	}
	
	/**
	 * 将解析后的xml文件放入到map中
	 */
	public void parseFileForDirectory(){
		File file = getDirectoryLocations();
		File[] fileArray = file.listFiles();
		 for(int i=0;i<fileArray.length;i++){
			 if(fileArray[i].isDirectory()||!(fileArray[i].getName().endsWith(".xml"))){
				 continue;
			 }
			 XmlParse xmlParse = new Dom4jParseImpl(fileArray[i]);
			 map.putAll( xmlParse.parseXml());
         } 
	}
	
	/**
	 * 得到文件目录下的所有文件列表
	 * @return
	 */
	private File getDirectoryLocations(){
		try{
	    URL url = Thread.currentThread().getContextClassLoader().getResource(FILE_DIRECTORY_LOCATIONS);
		File file = new File(URLDecoder.decode(url.getFile(), "GBK"));
        return file;
		}catch(Exception e){
			e.printStackTrace();
			return null;
		}
	}
	

}
